/***********************************
      1.请写出javascript的三种循环
         for(let i=0;i<10;i++){} while() do{}while()
      ***********************************/

/***********************************
            2.请写出break和continue作用和区别
            break:直接跳出循环

            continue:跳出当前循环
            ***********************************/

/***********************************
            3.循环输出1-100里奇数
            **********************************/
for (let i = 0; i < 100; i++) {
  if (i % 2 != 0) {
    document.write(i + ' ');
  }
}
document.write('<hr />');
/***********************************
            4.有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求出这个数列的前20项之和。
            (程序分析：请抓住分子与分母的变化规律。)
            2 3 5 8 13 21
            1 2 3 5  8 13
            ***********************************/
let a1 = 2,
  b1 = 1;
let a2 = 3,
  b2 = 2;
let sum = a1 / b1 + a2 / b2;
for (i = 3; i <= 20; i++) {
  const nextA = a1 + a2;
  const nextB = b1 + b2;
  sum += nextA / nextB;

  a1 = a2;
  a2 = nextA;
  b1 = b2;
  b2 = nextB;
}
console.log('数列' + sum);
/***********************************
            5.有一座桥，当你身上所拥有的钱大于30000时，每过一次桥则需要支付3000元。当你身上的钱小于或等于30000时，每过一次桥则需要支付你身上10%的钱。已知有一个人身上有33000元，问此人能过这座桥多少次之后，身上的钱会少于100块?
            ***********************************/
let n5 = 0;
let money5 = 33000;
while (money5 > 100) {
  if (money5 > 30000) {
    money5 = money5 - 3000;
  } else {
    money5 = money5 - money5 * 0.1;
  }
  n5++;
}
console.log('过桥:' + n5); //56
/***********************************
            6.小明去存1000钱，每天会产生1%的利息，求问，30天后，小明可以拿回多少钱
            ***********************************/
let money6 = 1000;
for (let i = 1; i <= 30; i++) {
  money6 = money6 + money6 * 0.01;
}
console.log('小明6:' + money6); // 1347.8489153329053
/***********************************
            7.小明题目升级版，小明拿着1000块在周一买入基金，一开户立给10块红利，
            逢周六日没有利息，平时利息为1%，请问30天后，小明可以拿回多少钱？
            ***********************************/
let money7 = 1000;
let d = 30; //天数
let n = Math.floor(d / 7); //有多少个周六日
let d1 = d - 2 * n; // 获取利息天数
for (let i = 1; i <= d1; i++) {
  if (i === 1) {
    money7 += 10;
    money7 = money7 + money7 * 0.01;
  } else money7 = money7 + money7 * 0.01;
}
console.log('小明7:' + money7); //1257.16301834843
/***********************************
            8.乘法口诀表:
            让学生输出4种方向的乘法口诀表
            ***********************************/
document.write("<table border='1'>");
for (let i = 1; i <= 9; i++) {
  document.write('<tr>');
  for (let j = 1; j <= i; j++) {
    // 模板字符串
    document.write(`<td>${j}*${i}=${i * j}</td>`);
  }
  document.write('</tr>');
}
document.write('</table>');

document.write('<hr / >');

document.write("<table border='1'>");
for (let i = 9; i >= 1; i--) {
  document.write('<tr>');
  for (let j = 1; j <= i; j++) {
    document.write(`<td>${j}*${i}=${i * j}</td>`);
  }
  document.write('</tr>');
}
document.write('</table>');

document.write('<hr / >');

document.write("<table border='1'>");
for (let i = 1; i <= 9; i++) {
  document.write('<tr>');
  for (let t = 0; t < 9 - i; t++) {
    document.write('<td ></td>');
  }
  for (let j = i; j >= 1; j--) {
    document.write(`<td>${j}*${i}=${i * j}</td>`);
  }
  document.write('</tr>');
}
document.write('</table>');
document.write('<hr / >');

document.write("<table border='1'>");
for (let i = 9; i >= 1; i--) {
  document.write('<tr>');
  for (let t = 0; t < 9 - i; t++) {
    document.write('<td ></td>');
  }
  for (let j = i; j >= 1; j--) {
    document.write(`<td>${j}*${i}=${i * j}</td>`);
  }
  document.write('</tr>');
}
document.write('</table>');
/***********************************
      9.给一个不多于5位的正整数，要求：一、求它是几位数，二、逆序打印出各位数字。
      ***********************************/
let x = prompt('请输入一个不多于5位的正整数');
n9 = x.length;
console.log('位数:' + n9);
if (x > 99999 || x < 0 || isNaN(x) || !x) {
  alert('请重新输入');
}
a = Math.floor(x / 10000);
b = Math.floor((x % 10000) / 1000);
c = Math.floor((x % 1000) / 100);
d = Math.floor((x % 100) / 10);
e = Math.floor(x % 10);
switch (n9) {
  case 5:
    sum9 = e * 10000 + d * 1000 + c * 100 + b * 10 + a;
    break;
  case 4:
    sum9 = e * 1000 + d * 100 + c * 10 + b;
    break;
  case 3:
    sum9 = e * 100 + d * 10 + c;
    break;
  case 2:
    sum9 = e * 10 + d;
    break;
  default:
    sum9 = e;
}
console.log(sum9 + '的倒叙是' + sum9);
/***********************************
            10.求100个随机数之和，随机数要求为0—9的整数
            ***********************************/
let num10;
let sum10 = 0;
for (let i = 0; i <= 100; i++) {
  num10 = Math.floor(Math.random() * 10);
  console.log(' ', num10);
  sum10 += num10;
}
console.log('100个随机数之和:', sum10);
/***********************************
        11.通过键盘输入一个任意的正整数（建议这个数比3大），
        在网页中输出3至这个数之间所有能被3整除的数字。
        ***********************************/
let n11 = prompt('输入一个任意的正整数（建议这个数比3大）');
let sum11 = 0;
if (n11 < 4 || isNaN(n11) || !n11 || n11 % 1 != 0) {
  alert('请重新输入');
}
for (let i = 3; i <= n11; i++) {
  if (i % 3 === 0) {
    sum11 += i + ' ';
  }
}
console.log('能被三整除的数字:', sum11);
/**********************************************
        12.黑白棋   奇数行 && 奇数列 || 偶数行 && 偶数列
        **********************************************/
document.write('<table border=1 cellspacing=0>');
for (let i = 1; i <= 5; i++) {
  document.write('<tr>');
  for (let j = 1; j <= 5; j++) {
    if ((i % 2 != 0 && j % 2 != 0) || (i % 2 == 0 && j % 2 == 0)) {
      document.write('<td style="background:black;"></td>');
    } else {
      document.write('<td ></td>');
    }
  }
  document.write('</tr >');
}
document.write('</table >');
